---
id: lab2-intro
slug: /labs/lab2
sidebar_position: 1
---

# 2. Программирование разветвляющихся алгоритмов

Алиас: `часы`.

## Задание

### Условие

Вывести на экран показания часов.

### Входные данные

Часы и минуты в формате целых чисел.

Пример 1:

```bash
2 48
```

Пример 2:

```bash
5 00
```

### Выходные данные

Результат должен быть представлен в смешанной текстово-числовой форме с учетом падежных окончаний. Результат выводится на новой строчке после ввода часов и минут в формате целых чисел. После вывода результата программа должна успешно завершиться без ожидания пользовательского ввода.

Пример 1:

```bash
2 48
2 часа 48 минут ночи
```

Пример 2:

```bash
5 00
5 часов утра ровно
```

Использовать следующие границы частей суток:

```bash
5 час <= утро < 12 час,
12 < день < 18 час,
18 <= вечер <= 23 час,
0 час < ночь < 5 час.
```

В случае ввода невозможных показаний часов выдать соответствующее сообщение:

```bash
24 03
Недопустимое время!
```

По результатам работы представить отчет.

Данные для отладки:

- `12 00` – `полдень`,
- `12 23` – `12 часов 23 минуты дня`,
- `13 12` – `1 час 13 минут дня`,
- `21 33` – `9 часов 33 минуты вечера`,
- `00 00` – `полночь`,
- `03 01` – `3 часа 1 минута ночи`.

## Указания по выполнению работы

Функция `scanf_s` не является обязательной частью стандарта языка C и на настоящий момент полностью поддерживается лишь в Microsoft Visual Studio. По мнению Microsoft, `scanf_s` является  безопасной  версией  функции `scanf` (отсюда  суффикс `_s` – `secure`).

:::caution

Для выполнения задания необходимо использовать `scanf` вместо `scanf_s`, из-за того, что последняя не поддерживается набором компиляторов GCC, с помощью которого тестируется код.

:::

:::danger

`windows.h` - Windows-специфичный заголовочный файл языка программирования С, в котором объявляются функции, предоставляющие интерфейс доступа к Windows API. Все Windows-специфичные заголовочные файлы запрещено использовать!

:::

## Проверка работы

Подготовленная программа для решения задания тестируется автоматически.

## Методический материал

1. [Требования к отчету](RequirementsForReport.md)
2. [Особенности работы с репозиторием](AutomatedLabs/intro.md)
3. [Рекомендации по разработке программы](Recommendations.md)
4. Контрольные вопросы:
   1. [Для программ на C](./TestQuestion/ForC.md)
   2. [Для программ на C++](./TestQuestion/ForCpp.md)
